The rendering of real-time graphics is challenged, in part, by global illumination effects, particularly in area lighting environments requiring integration over multiple light source samples. Such illumination effects are measured as radiance passing through spherical shells about a surface point p, and include: source radiance, which originates from an infinite sphere; transferred incident radiance, which passes through an infinitesimal hemisphere and equals the source radiance decreased by self-shadowing and increased by inter-reflection; and exit radiance, which passes outward through an infinitesimal hemisphere, and results as a multiplication product of the BRDF (bi-directional reflectance distribution function) and the transferred incident radiance, plus subsurface scattering.
Spherical harmonic (SH) provides a compact, alias-avoiding representation for functions of radiance over a sphere or hemisphere (Cabral et al., 1987, Bidirectional Reflection Functions from Surface Bump Maps, SIGGRAPH 87, 273–281; Sillon et al., 1991, A Global Illumination Solution for General Reflectance Distributions, SIGGRAPH 91, 187–196; Westin et al. 1992, Predicting Reflectance Functions from Complex Surfaces, SIGGRAPH 92, 255–264; and Ramamoorthi et al. 2001, An Efficient Representation for Irradiance Environment Maps, SIGGRAPH 2001, 497–500.). Using traditional rendering methods, integration over the light bottlenecks in connection with low-frequency source illumination, which small vectors (e.g. N=25) of SH coefficients approximate well.
By related U.S. patent application Ser. No. 10/389,553, the radiance transfer of an object is precomputed in terms of low-order SHs. For a diffuse object, exit radiance results from dotting a 25-D vector, representing the source radiance, with a 25-element radiance transfer vector precomputed and stored at each sample point p. By storing this transfer vector per-vertex, real-time self-shadowing and inter-reflection results from a simple vertex shader. For a glossy object, radiance transfer is represented as a linear operator converting a 25-D source radiance vector into a 25-D transferred radiance vector, via a 625-element transfer matrix that varies for each p. This glossy transfer matrix cannot be accommodated by typical graphics hardware. Accordingly, there exists a need to provide a CPU implementation capable of achieving real-time frame rates for more than just a constant view or lighting.